package com.datatraffic.services;

import org.json.JSONArray;
import org.json.JSONObject;
import android.content.Context;
import com.datatraffic.databasecontrol.DatabaseControl;

public class AccionesOffline {
	private Context contexto;
	
	public AccionesOffline (Context contexto)
	{
		this.contexto = contexto;
	}
	
	public JSONObject crearFormulario(JSONObject recibido)
	{
		JSONObject resultado = jsonError();
		if(this.contexto != null)
		{
			try {
				DatabaseControl dbc = new DatabaseControl(this.contexto);
				dbc.open();		
				resultado = dbc.addNewForm(recibido);
				dbc.close();		
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return resultado;			
	}
	
	public JSONObject editarFormulario(JSONObject recibido)
	{
		JSONObject resultado = jsonError(); 
		if(this.contexto != null)
		{		
			try {		
				DatabaseControl dbc = new DatabaseControl(this.contexto);
				dbc.open();		
				resultado = dbc.addNewForm(recibido);
				dbc.close();
			} catch (Exception e) {
				e.printStackTrace();
				
			}
		}
		return resultado;			
	}	
	
	public JSONObject consultarFormulario(JSONObject recibido, String filtro)
	{
		int limit=5;
		try
		{
			limit = (int) recibido.optLong("limit");
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		int start = 0;
		
		try
		{
			start = (int) recibido.optLong("start");
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		int user = 0;
		try
		{
			user = (int) recibido.optLong("user");
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}		
		
		JSONObject resultado = jsonError(); 
		if(this.contexto != null)
		{
			String query = "";
			
			query = recibido.optString("query");
			
			try {		
				DatabaseControl dbc = new DatabaseControl(this.contexto);
				dbc.open();
				resultado = dbc.getFormsByQuery(query,start,limit,user,filtro);
				dbc.close();
			} catch (Exception e) {
				e.printStackTrace();
				resultado = jsonError(); 
			}			
		}
		return resultado;			
	}	
	
	public JSONObject consultarnombre (JSONObject recibido)
	{
		
		int user = 0;
		
		String nombre = "";
		
		nombre = recibido.optString("nombre");
		
		user = (int) recibido.optLong("user");
		
		JSONObject resultado = jsonError(); 
		
		if(this.contexto != null)
		{	
			try
			{		
				DatabaseControl dbc = new DatabaseControl(this.contexto);
				dbc.open();
				resultado = dbc.getformnombre(nombre, user);
				dbc.close();	
				if(resultado.length()<0)
				{
					resultado.put("error", "false");
				}
			}		
			catch(Exception e)
			{
				e.printStackTrace();
			}	
		}
		
		return resultado;
	}
	
	public JSONObject hacerLogin(JSONObject recibido)
	{
		JSONObject result = new JSONObject();
		
		try
		{
			DatabaseControl dbc = new DatabaseControl(this.contexto);
			dbc.open();		
			result = dbc.hacerlogin(recibido);
			dbc.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		return result;	
	}
	
	public boolean guardarLogin(JSONObject recibido)
	{
		boolean result = false;
		
		try
		{
			DatabaseControl dbc = new DatabaseControl(this.contexto);
			dbc.open();		
			result = dbc.guardarlogin(recibido);
			dbc.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		return result;
	}
	
	public int getNumForms(JSONObject recibido)
	{
		int result = 0;
		
		try
		{
			DatabaseControl dbc = new DatabaseControl(this.contexto);
			dbc.open();		
			result = dbc.getNumForms(recibido);
			dbc.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		return result;
	}
	
	public void deleteFormById(int form_id)
	{
		try
		{
			DatabaseControl dbc = new DatabaseControl(this.contexto);
			dbc.open();						
			dbc.deleteFormById(form_id);
			dbc.close();
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}	
	
	private JSONObject jsonError()
	{
		JSONObject resultado = null;
		try {
			resultado = new JSONObject();
			resultado.put("error", "true");
			resultado.put("msg", "Ocurrio un error");
			resultado.put("total", 0);
			resultado.put("data",  new JSONArray());			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return resultado;
	}	
}
